// import {ElMessage} from 'element-plus'
import { useSingleMessage } from '@/hooks/element/useSingleMessage'

// interface copyEl {
//     $value: any;
//     onclick: (event:any) => void;
//     addEventListener: (arg0: string, arg1: any) => void;
//     handler: any
// }

// export const copy = {
//   mounted: function (el: copyEl, { value }: any) {
//     el.$value = value

//     // el控件定义 onclick 事件
//     el.onclick = () => {
//       if (!el.$value) {
//         ElMessage.error(`复制失败，没有可复制内容`)
//         return
//       }
//       // 动态创建 textarea 标签
//       const textarea: HTMLTextAreaElement = document.createElement('textarea')
//       // 将该 textarea 设为 readonly 防止 iOS 下自动唤起键盘，同时将 textarea 移出可视区域
//       textarea.readOnly = true
//       textarea.style.position = 'absolute'
//       textarea.style.left = '-9999px'
//       // 将要 copy 的值赋给 textarea 标签的 value 属性
//       // textarea.value = el.$value
//       textarea.value = el.$value
//       // 将 textarea 插入到 body 中
//       document.body.appendChild(textarea)
//       // 选中值并复制
//       textarea.select()
//       const result = document.execCommand('Copy')
//       if (result) {
//         ElMessage.success(`复制成功, ${textarea.value}`)
//       }
//       document.body.removeChild(textarea)
//     }
//     // 绑定点击事件，就是所谓的一键 copy 啦
//     // el.addEventListener('click', el.handler)
//   },
//   // 当传进来的值更新的时候触发
//   beforeUpdate(el: { $value: any; }, { value }: any) {
//     el.$value = value
//   },
//   // 指令与元素解绑的时候，移除事件绑定
//   unmounted(el: { removeEventListener: (arg0: string, arg1: any) => void; handler: any; }) {
//     el.removeEventListener('click', el.handler)
//   }
// }

// 更为强大的复制功能
const copy = {
  mounted(el: any, binding: any) {
    // 双击触发复制
    if (binding.modifiers.dblclick) {
      el.addEventListener('dblclick', () => handleClick(binding.value))
      el.style.cursor = 'copy'
    }
    // 点击icon触发复制
    else if (binding.modifiers.icon) {
      if (el.hasIcon) return
      const iconElement = document.createElement('i')
      iconElement.setAttribute('class', 'directive-copy-icon')
      el.appendChild(iconElement)
      el.hasIcon = true
      iconElement.addEventListener('click', () => handleClick(binding.value))
      iconElement.style.cursor = 'copy'
    }
    // 单击触发复制
    else {
      el.addEventListener('click', () => handleClick(binding.value))
      el.style.cursor = 'copy'
    }
  }
}

function handleClick(text: string) {
  navigator.clipboard.writeText(text).then(
    function () {
      useSingleMessage.success(`复制成功, ${text}`)
    },
    function () {
      console.log('复制失败')
    }
  )
}

export default copy
